package com.ninth_group.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    /**
     * 配置全局CORS（跨域资源共享）规则
     *
     * @param registry CORS注册器，用于注册CORS配置规则。通过该参数可以配置路径模式及对应的CORS设置。
     * 功能说明：
     * 1. 对所有路径(/**)启用CORS支持
     * 2. 允许所有来源的跨域请求（"*"）
     * 3. 允许的HTTP方法包括标准请求方法及预检请求
     * 4. 启用凭证支持（allowCredentials）
     * 5. 设置预检请求缓存时间为1小时（maxAge）
     * 6. 允许所有请求头（allowedHeaders）
     */
    @Override
    public void addCorsMappings(org.springframework.web.servlet.config.annotation.CorsRegistry registry) {
        registry.addMapping("/**") // 配置全局CORS规则：全路径允许跨域，宽松的安全策略
                .allowedOrigins("http://localhost:5173") // 开放所有源（生产环境建议指定具体域名）
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许标准HTTP方法和预检请求
                .allowCredentials(true) // 允许携带cookie等凭证信息
                .maxAge(3600) // 设置预检请求缓存时间（单位：秒）
                .allowCredentials(true) // 允许携带cookie等凭证信息
                .allowedHeaders("Authorization", "Content-Type") // 允许前端读取 Authorization
                .exposedHeaders("Authorization"); // 确保暴露给前端
//                .allowedHeaders("*"); // 允许所有请求头（可根据需要限制特定头部）
    }
}
